import logging
import sys


def _init_logger(log):
    # 检查是否已经添加了处理器，避免重复添加
    if log.handlers:
        return

    formatter = logging.Formatter('[%(asctime)s][%(levelname)s][%(filename)s:%(lineno)d] - %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
    # 创建文件处理器
    file_handler = logging.FileHandler('app.log', encoding='utf-8')
    # 创建控制台处理器
    console_handler = logging.StreamHandler(sys.stdout)

    # 定义日志格式
    file_handler.setFormatter(formatter)
    console_handler.setFormatter(formatter)

    # 将处理器添加到日志记录器
    log.addHandler(file_handler)
    log.addHandler(console_handler)


def _get_looger():
    # 使用唯一名称创建自定义日志记录器，避免与根日志记录器冲突
    log = logging.getLogger('xbot_logger')
    # 防止日志传播到父级日志记录器（避免重复记录）
    log.propagate = False
    _init_logger(log)
    log.setLevel(level=logging.INFO)
    return log


logger = _get_looger()
